/*
* Copyright (c) 2016 ShopJsp. All Rights Reserved.
 * ============================================================================
 * 版权所有 2011 - 今 北京华宇盈通科技有限公司，并保留所有权利。
 * ----------------------------------------------------------------------------
 * 提示：在未取得SHOPJSP商业授权之前，您不能将本软件应用于商业用途，否则SHOPJSP将保留追究的权力。
 * ----------------------------------------------------------------------------
 * 官方网站：http://www.shopjsp.com
 * ============================================================================
*/
package com.hyyt.shopjsp.util.sms;

import java.util.HashMap;
import java.util.Set;

import com.cloopen.rest.sdk.CCPRestSDK;
import com.hyyt.shopjsp.util.common.Utils;
import com.hyyt.shopjsp.util.redis.util.RedisDataReadUtil;
import org.apache.log4j.Logger;

/**
 * 云通讯 短息发送类
 * 此功能需要传递短信模板ID参数 在系统的配置文件中进行配置
 * @author mqr
 */
public class SDKSendTemplateSMS{
	/**
	 * 加载日志
	 */
	private static final Logger logger = Logger.getLogger(SDKSendTemplateSMS.class);
	/**
	 * 公共的初始化信息方法
	 */
	public static CCPRestSDK initSMSInfo(){
		CCPRestSDK restAPI = new CCPRestSDK();
		// 初始化服务器地址和端口，格式如下，服务器地址不需要写https://
		restAPI.init(RedisDataReadUtil.getSysConfig("yunSDK_serverAddress"),RedisDataReadUtil.getSysConfig("yunSDK_serverPort"));
		// 初始化主帐号名称和主帐号令牌
		restAPI.setAccount(RedisDataReadUtil.getSysConfig("yunSDK_primaryAccountNumberName"),RedisDataReadUtil.getSysConfig("yunSDK_primaryAccountNumberToken"));
		// 初始化应用ID
		restAPI.setAppId(RedisDataReadUtil.getSysConfig("yunSDK_appId"));
		return restAPI;
	}
	
	
	/**
	 * 订单支付成功发送短信方法
	 * @param phone 发送的号码
	 * @param contId 模板ID
	 * @param content 短信组拼参数
	 */
	@SuppressWarnings({ "unchecked", "unused" })
	public static boolean sentSMSForOrder(String phone,Integer contId,String content){
		boolean isSuccess =false;
		if(Utils.objectIsNotEmpty(phone)){//手机号不为空
			HashMap<String, Object> result = null;
			//调用公共的初始化方法
			CCPRestSDK restAPI=initSMSInfo();
			if(contId==1){//买家
				result = restAPI.sendTemplateSMS(phone,RedisDataReadUtil.getSysConfig("yunSDK_template_buyer") ,new String[]{content});
				logger.info("订单支付成功给买家发送短信");
			}
			if(contId==2){//卖家
				result = restAPI.sendTemplateSMS(phone,RedisDataReadUtil.getSysConfig("yunSDK_template_seller") ,new String[]{content});
				logger.info("订单支付成功给卖家发送短信");
			}
			//System.out.println("SDKTestGetSubAccounts result=" + result);
			if("000000".equals(result.get("statusCode"))){
				//正常返回输出data包体信息（map）
				HashMap<String,Object> data = (HashMap<String, Object>) result.get("data");
				Set<String> keySet = data.keySet();
				for(String key:keySet){
					Object object = data.get(key);
				}
				isSuccess=true;
			}else{
				//异常返回输出错误码和错误信息
				logger.info("错误码=" + result.get("statusCode") +" 错误信息= "+result.get("statusMsg"));
			}
		}
		return isSuccess;
	}
	
	/**
	 * 发送短信验证码
	 * @param phone 发送的号码
	 * @param contId 模板ID
	 * @param phoneValidateCode 发送随机码
	 */
	@SuppressWarnings({ "unchecked", "unused" })
	public static boolean sentSMS(String phone,String contId,String phoneValidateCode){
		if(Utils.objectIsNotEmpty(phone)){//手机号不为空
			HashMap<String, Object> result = null;
			//调用公共的初始化方法
			CCPRestSDK restAPI=initSMSInfo();
			//System.out.println("验证码发送成功");
			result = restAPI.sendTemplateSMS(phone,contId ,new String[]{phoneValidateCode});
			//System.out.println("SDKTestGetSubAccounts result=" + result);
			if("000000".equals(result.get("statusCode"))){
				//正常返回输出data包体信息（map）
				HashMap<String,Object> data = (HashMap<String, Object>) result.get("data");
				Set<String> keySet = data.keySet();
				for(String key:keySet){
					Object object = data.get(key);
				}
				return true;
			}else{
				//异常返回输出错误码和错误信息
				logger.info("错误码=" + result.get("statusCode") +" 错误信息= "+result.get("statusMsg"));
				return false;
			}
		}else{
			return false;
		}
	}

}
